import dayjs from 'dayjs';
import 'dayjs/locale/zh-cn'; // 引入中文语言包

// 设置中文为默认语言  不使用中文包时显示周几时是英文
dayjs.locale('zh-cn');

// 设置日期格式
const setTimeFormat = (dateTime) => {

  const date = dayjs(dateTime).format('YYYY-MM-DD HH:mm:ss');

  //TODO 传入的时间为 new Date('2024-8-22 7:23:54') Thu Aug 22 2024 18:23:54 GMT+0800 (中国标准时间) 后期进行相应的日期格式修改
  // console.log(date);

  // 转换时间
  const time = dayjs(date);
  // console.log(time);

  // 当前时间
  const now = dayjs();
  // console.log(now);

  // 获取本周的开始和结束日期
  const startOfWeek = now.startOf('week'); // 根据本地设置，可能是周日或周一 startOf是获取开始时间的 四种参数 year week day month 分别代表开始时间
  const endOfWeek = now.endOf('week'); // 根据本地设置，可能是周六或周日 同义：endOf获取结束时间的

  // 判断是否在本周内 
  // isAfter传入的时间是否在当前时间的后面 isBefore同义在什么之前  isSame判断某一时间点在同一范围内 同一天 同一小时 同一年 一个月 由他的第二个参数表示 year week day month hour
  const isInThisWeek = time.isAfter(startOfWeek) && time.isBefore(endOfWeek) || time.isSame(startOfWeek) || time.isSame(endOfWeek);

  if (time.isAfter(now.startOf('day'))) {
    // 时间在今天
    const hour = time.hour();
    let period = '上午'; // 默认为上午
    if (hour >= 12 && hour < 18) {
      period = '下午';
    } else if (hour >= 18) {
      period = '晚上';
    }
    return `${period} ${time.format('HH:mm')}`;
  } else if (time.isAfter(now.startOf('day').subtract(1, 'day')) && time.isBefore(now.startOf('day'))) {
    // 时间在昨天
    return '昨天';
  } else if (isInThisWeek) {
    // 时间在本周内
    return time.format('dddd'); // 星期几 不使用中文包时显示周几时是英文
  } else if (time.year() === now.year()) {
    // 超过一周，但在当前年份
    return time.format('M月D日'); // 月日
  } else {
    // 超过一周且不在当前年份
    return time.format('YYYY年M月D日'); // 年月日
  }
}

export {
  setTimeFormat
}
